#ifndef RVIZ_INITIAL_POSE_TOOL_H
#define RVIZ_INITIAL_POSE_TOOL_H

#ifndef Q_MOC_RUN

#include <QObject>
#include <QCursor>
#include <ros/ros.h>
#include <ros/publisher.h>
#include <tf/transform_listener.h>

#include "rviz/default_plugin/tools/pose_tool.h"
#include <geometry_msgs/Pose.h>
#include <visualization_msgs/Marker.h>
#include <visualization_msgs/MarkerArray.h>
#include <geometry_msgs/PoseStamped.h>

#endif


namespace rviz
{
    class Arrow;
    class DisplayContext;   
    class StringProperty;
}

namespace path_creator_rviz_plugin
{
    //class StringProperty;

    // creating a new class, which is a subclass of rviz::PoseTool
    class PoseSendTool: public rviz::PoseTool
    {
    Q_OBJECT
    public:
        PoseSendTool();
        virtual ~PoseSendTool() {}
        virtual void onInitialize();
    
    protected:
        virtual void onPoseSet(double x, double y, double theta);
    
    private Q_SLOTS:
        void updateTopic();

    private:
        ros::NodeHandle nh_;
        ros::Publisher clicked_pose_pub_;

        rviz::StringProperty* topic_property_;

    protected:
        QCursor std_cursor_;
        QCursor hit_cursor_;
    };
}

#endif